The present invention relates to a portable label printer having a computer system, and relates particularly to, a label printer computer system for storing and operating multiple application programs. This system is useful for improving the flexibility of the label printer by allowing a user, or host computer interfaced to the printer, to select which stored application programs the computer of the printer should operate the printer in accordance therewith. The computer system provided by the invention is especially adapted to a portable, handheld label printer.
Label printers are used in factories, warehouses and retail stores for price ticket printing and inventory control. These label printers may be hand-held or of a size and weight such that it can easily be carried by a person. The operation of the label printers is controlled by a programmed computer, such as a microprocessor, in accordance with an application program stored in memory of the printer.
Referring to FIG. 1, the software architecture of a typical label printer is shown in which memory of the printer stores an operating system and an application program file to control printer operation. The application program file generally includes an application module, and various other modules representing subroutines or data files. To reconfigure printer operation the application and command interpreter modules are downloaded into programmable memory of the printer with the remaining modules resident in read-only (non-programmable) printer memory. The command interpreter modules determine which commands the printer will respond to, while the application modules operate the printer in accordance with the interpreted commands. Accordingly, only one application program file is stored in the memory of the printer at a time.
U.S. Pat. Nos. 5,594,838 and 5,483,624 describe a computer controlled label printer which operates in accordance with a set of user generated sequence of commands which forms an application program. This application program is downloaded into programmable memory of the label printer. Each command in the sequence corresponds to one of several command routines which are also stored in read-only memory of the printer. The printer""s operating system and application program interpreter is also stored in read-only memory. To reconfigure operation of the printer, a new application program is downloaded into the label printer. Only a single application program may be stored in the printer at a time.
U.S. Pat. No. 5,402,528 describes a reconfigurable label printer by downloading to alterable (programmable) memory of the printer a jump table which specifies which routines, stored in nonalterable (read-only) memory of the printer, are enabled or disabled. The sequence of the enabled routines defines the operation of the printer. Reconfiguring printer operation, requires that a new jump table be downloaded into printer memory. Accordingly, this jump table can be considered as determining the application program operating the printer.
U.S. Pat. No. 4,712,929 describes a label printer having read-only memory (ROM) storing programs for printing different label formats. Each program is limited to defining label format of information to be printed, and cannot be altered without disassembly of the printer and replacement of reprogrammed ROM devices. Accordingly, although the user can select the label format of the printer, the stored programs do not represent application programs which can be downloaded into the printer.
U.S. Pat. No. 5,267,800 describes a computer controlled label printer which contains a program in memory for controlling printing operation responsive to communication between the printer and a host computer to supply information for printing labels. The program is stored in read-only memory devices, such as an EPROM, which cannot be updated with a new program and without disassembly of the printer and replacement of reprogrammed EPROM devices.
In prior art label printers, only a single application program or table is stored in memory of the printer, thereby limiting printer operation to that defined by that particular application program. To change printer operation requires the time and expense of installing a new application program in the printer by either downloading the new application program or table, or programming and replacing read-only memory devices with the new application program. This often requires that the printer be taken out of service until the new application program can be installed in the printer. In some cases, an operator must utilize multiple label printers operating in accordance with different application programs, thereby allowing the operator to select the label printer providing the desired printer operation. This requires the cost of purchasing multiple label printers operating with different programs.
Another feature of prior art label printers is that they typically store font files in memory representing bit maps of characters to be rendered by the printer. The characters of these font files are of a fixed point size, thus to render characters of a different point size, additional font files are required. Consequently, to store font files for character of different point sizes requires additional memory, which increases manufacturing costs while still limiting available character point sizes to that stored in memory. The need for additional memory storage can become compounded when multiple fonts with different point sizes are desired.
Accordingly, it is the principal object of the present invention to provide a computer controlled label printer having an improved system for storing multiple application programs, in which the particular application program may be selected to provide desired printer operation, thereby improving flexibility in the printer operation by not requiring that a new application program be installed each time printer reconfiguration is desired.
It is another object of the present invention to provide a computer controlled label printer having an improved system for storing multiple application programs which can automatically select one of the application programs, or allow a user or interfaced host computer, to select the application program to be executed by the computer of the printer.
It is another object of the present invention to provide a computer controlled label printer having an improved system for storing multiple application programs in which the application programs need not be a series of user commands, or require commands from a host computer interfaced to the printer.
It is a further object of the present invention to provide a computer controlled label printer having an improved system for storing multiple application programs in which Direct Memory Access (DMA) may be used in decoding of one or two dimensional barcodes scanned with a barcode scanner coupled to the printer.
It is still a further object of the present invention to provide a computer controlled label printer having an improved system for storing multiple application programs in which the barcode decoding program may be a separate file from the application program.
It is still yet a further object of the present invention to provide a computer controlled label printer having an improved system for storing multiple application programs in which a program file is provided for character rendering which automatically scales characters of a font to a desired size.
It is yet another object of the present invention to provide a computer controlled label printer having an improved system for storing multiple application programs in which a graphical user interface on the host computer, interfaced to the label printer, allows a user to select parameters of printer operation for the selected application program.
Briefly described, a system embodying the invention is provided for storing multiple application programs in a printer, such as a portable, handheld label printer having a printing mechanism, including a print head, which may be a thermal print head, and a computer for controlling the printer mechanism and the advancement of label stock for the printer mechanism to print on the label stock. The stock may be a web or liner on which label patches releasably adhere, or linerless stock on which the labels are printed and which are cut into labels. Coupled to the printer may be a barcode scanner controllable by the computer. A memory accessible by the computer stores the application programs, and an operating system. The operating system is started on the computer when the computer is first activated. Each of the application programs contains instructions which are executable by the computer to operate the printer. The operating system allows one of the application programs to be selected by a user, via a keypad, or by a host computer interfaced to the printer, for execution by the computer. Application programs can also be selected automatically by the computer based on the stored application program. Utility files are also stored in the memory separate from the application programs. These utility files include files having data or programs executable by the computer in accordance with instructions of the selected application programs when executed by the computer. Such programs include a barcode decode program, a barcode encode program, and a scalable character rendering program.
The barcode decoding program utilizes Direct Memory Access (DMA) of the computer to capture values of a timer in the computer upon each transition in a scan data signal from the barcode scanner. The captured values are stored in memory and then decoded to provide barcode data representing one or two-dimensional barcodes. The character rendering program provides for scaling of characters, defined in utility font files, to desired sizes.
A graphical user interface on the host computer may provide a display with a screen for enabling a user to input various parameters of printer operation, such as selection of paper type onto which the printer prints upon, selection of detection mode for one of index marks and gaps on the paper, and selection of type of cutting of labels after each label is printed.